home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-I386 / TERMIOS.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  3KB  |  104 lines

  1. #ifndef _I386_TERMIOS_H
  2. #define _I386_TERMIOS_H
  3.  
  4. #include <asm/termbits.h>
  5. #include <asm/ioctls.h>
  6.  
  7. struct winsize {
  8.     unsigned short ws_row;
  9.     unsigned short ws_col;
  10.     unsigned short ws_xpixel;
  11.     unsigned short ws_ypixel;
  12. };
  13.  
  14. #define NCC 8
  15. struct termio {
  16.     unsigned short c_iflag;        /* input mode flags */
  17.     unsigned short c_oflag;        /* output mode flags */
  18.     unsigned short c_cflag;        /* control mode flags */
  19.     unsigned short c_lflag;        /* local mode flags */
  20.     unsigned char c_line;        /* line discipline */
  21.     unsigned char c_cc[NCC];    /* control characters */
  22. };
  23.  
  24. /* modem lines */
  25. #define TIOCM_LE    0x001
  26. #define TIOCM_DTR    0x002
  27. #define TIOCM_RTS    0x004
  28. #define TIOCM_ST    0x008
  29. #define TIOCM_SR    0x010
  30. #define TIOCM_CTS    0x020
  31. #define TIOCM_CAR    0x040
  32. #define TIOCM_RNG    0x080
  33. #define TIOCM_DSR    0x100
  34. #define TIOCM_CD    TIOCM_CAR
  35. #define TIOCM_RI    TIOCM_RNG
  36. #define TIOCM_OUT1    0x2000
  37. #define TIOCM_OUT2    0x4000
  38.  
  39. /* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
  40.  
  41. /* line disciplines */
  42. #define N_TTY        0
  43. #define N_SLIP        1
  44. #define N_MOUSE        2
  45. #define N_PPP        3
  46. #define N_STRIP        4
  47. #define N_AX25        5
  48. #define N_X25        6    /* X.25 async */
  49. #define N_6PACK        7
  50. #define N_MASC        8    /* Reserved for Mobitex module <kaz@cafe.net> */
  51. #define N_R3964        9    /* Reserved for Simatic R3964 module */
  52. #define N_PROFIBUS_FDL    10    /* Reserved for Profibus <Dave@mvhi.com> */
  53. #define N_IRDA        11    /* Linux IR - http://www.cs.uit.no/~dagb/irda/irda.html */
  54. #define N_SMSBLOCK    12    /* SMS block mode - for talking to GSM data cards about SMS messages */
  55. #define N_HDLC        13    /* synchronous HDLC */
  56.  
  57. #ifdef __KERNEL__
  58.  
  59. /*    intr=^C        quit=^\        erase=del    kill=^U
  60.     eof=^D        vtime=\0    vmin=\1        sxtc=\0
  61.     start=^Q    stop=^S        susp=^Z        eol=\0
  62.     reprint=^R    discard=^U    werase=^W    lnext=^V
  63.     eol2=\0
  64. */
  65. #define INIT_C_CC "\003\034\177\025\004\0\1\0\021\023\032\0\022\017\027\026\0"
  66.  
  67. /*
  68.  * Translate a "termio" structure into a "termios". Ugh.
  69.  */
  70. #define SET_LOW_TERMIOS_BITS(termios, termio, x) { \
  71.     unsigned short __tmp; \
  72.     get_user(__tmp,&(termio)->x); \
  73.     *(unsigned short *) &(termios)->x = __tmp; \
  74. }
  75.  
  76. #define user_termio_to_kernel_termios(termios, termio) \
  77. ({ \
  78.     SET_LOW_TERMIOS_BITS(termios, termio, c_iflag); \
  79.     SET_LOW_TERMIOS_BITS(termios, termio, c_oflag); \
  80.     SET_LOW_TERMIOS_BITS(termios, termio, c_cflag); \
  81.     SET_LOW_TERMIOS_BITS(termios, termio, c_lflag); \
  82.     copy_from_user((termios)->c_cc, (termio)->c_cc, NCC); \
  83. })
  84.  
  85. /*
  86.  * Translate a "termios" structure into a "termio". Ugh.
  87.  */
  88. #define kernel_termios_to_user_termio(termio, termios) \
  89. ({ \
  90.     put_user((termios)->c_iflag, &(termio)->c_iflag); \
  91.     put_user((termios)->c_oflag, &(termio)->c_oflag); \
  92.     put_user((termios)->c_cflag, &(termio)->c_cflag); \
  93.     put_user((termios)->c_lflag, &(termio)->c_lflag); \
  94.     put_user((termios)->c_line,  &(termio)->c_line); \
  95.     copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
  96. })
  97.  
  98. #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios))
  99. #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios))
  100.  
  101. #endif    /* __KERNEL__ */
  102.  
  103. #endif    /* _I386_TERMIOS_H */
  104.